iT邦幫忙

2024 iThome 鐵人賽

DAY 22
1
Mobile Development

用最接近自然語言的Basic30天學會行動App系列 第 22

Basic30天學會行動App-第22章.使用Firebase擴展功能

  • 分享至 

  • xImage
  •  

第22章: 使用Firebase擴展功能

Firebase 是由 Google 提供的一套後端服務工具集,旨在幫助開發者快速構建高效、可靠的行動應用程式。它提供了多種功能,如實時資料庫、驗證、雲端儲存、推送通知等,使開發者能夠專注於應用程式的功能與體驗,而無需擔心後端架構的實現。本章將介紹 Firebase 的基本概念,如何使用 Firebase Database,以及實作推送通知功能。

Firebase的基本介紹

Firebase 是一個為行動應用程式開發而設計的綜合性平台,提供即時資料庫、驗證、雲端儲存、推送通知等多種服務。這些服務能夠無縫地整合到應用程式中,並且通過 Firebase 控制台管理。
Firebase 的核心功能包括:
• Firebase Realtime Database:一個 NoSQL 雲端資料庫,能夠即時同步資料至所有用戶端。
• Firebase Authentication:提供簡單而強大的使用者驗證功能,包括電子郵件、社交帳號、電話號碼等多種驗證方式。
• Firebase Cloud Messaging (FCM):一種推送通知服務,允許開發者向使用者傳遞通知。
• Firebase Analytics:一個強大的分析工具,幫助開發者瞭解使用者行為,優化應用程式。

使用Firebase Database

Firebase Realtime Database 是一個儲存在雲端的 NoSQL 資料庫,能夠在所有用戶端之間即時同步資料。它非常適合構建需要即時資料更新的應用程式,如聊天應用或即時協作工具。

  1. Firebase Database 的初始化
    在 B4A 中使用 Firebase Database 之前,需要先在 Firebase 控制台中創建專案,並下載相應的設定檔案(google-services.json)。將此檔案放置於專案的根目錄,然後在 B4A 中初始化 Firebase。
Sub Process_Globals
    Dim firebaseDB As FirebaseDatabase
    Dim dataRef As DatabaseReference
End Sub

Sub Activity_Create(FirstTime As Boolean)
    firebaseDB.Initialize("firebaseDB", "")
    dataRef = firebaseDB.GetReference("example_node")
End Sub
  1. 寫入與讀取資料
    使用 Firebase Database 的寫入與讀取操作非常簡單,透過 DatabaseReference 物件進行資料的寫入與讀取。
' 寫入資料至 Firebase
Sub WriteData
    Dim map As Map
    map.Initialize
    map.Put("name", "John Doe")
    map.Put("age", 30)
    dataRef.SetValue(map)
End Sub

' 讀取資料從 Firebase
Sub ReadData
    dataRef.AddValueEventListener("dataValue")
End Sub

Sub dataValue_DataChange(Snapshot As Object)
    Dim dataMap As Map = Snapshot
    Log("Name: " & dataMap.Get("name"))
    Log("Age: " & dataMap.Get("age"))
End Sub

推送通知的實作

Firebase Cloud Messaging (FCM) 提供了可靠的推送通知功能,允許開發者向其用戶推送通知消息,無論應用程式是在前台還是背景運行。

  1. 初始化 Firebase Cloud Messaging
    首先需要在 Firebase 控制台中啟用 FCM 功能,並且在 B4A 中初始化 FCM。
Sub Process_Globals
    Dim fm As FirebaseMessaging
End Sub

Sub Activity_Create(FirstTime As Boolean)
    fm.Initialize("fm")
    fm.SubscribeToTopic("general") ' 訂閱主題
End Sub
  1. 接收推送通知
    當應用程式接收到推送通知時,可以在 B4A 中處理接收到的消息,並在通知欄中顯示。
Sub fm_MessageArrived (Message As RemoteMessage)
    Log("Message arrived: " & Message.GetData)
    ' 顯示通知
    Dim n As Notification
    n.Initialize
    n.Icon = "icon" ' 圖標名稱
    n.SetInfo("新消息", Message.GetData, Main)
    n.Notify(1)
End Sub
  1. 發送推送通知
    可以在 Firebase 控制台中手動發送通知,或者使用 Firebase 的 API 從伺服器端發送推送通知。
' 伺服器端範例(使用 HTTP POST 請求)
'https://fcm.googleapis.com/fcm/send
'Header:
'   Authorization: key=YOUR_SERVER_KEY
'   Content-Type: application/json
'Body:
'{
'   "to" : "/topics/general",
'   "notification" : {
'      "title" : "標題",
'      "body" : "內容"
'   }
'}

範例程式:綜合應用

以下是一個簡單的應用程式範例,展示如何使用 Firebase Database 來儲存資料,以及如何使用 FCM 來接收推送通知。

Sub Process_Globals
    Dim firebaseDB As FirebaseDatabase
    Dim dataRef As DatabaseReference
    Dim fm As FirebaseMessaging
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("MainLayout")
    
    ' 初始化 Firebase
    firebaseDB.Initialize("firebaseDB", "")
    dataRef = firebaseDB.GetReference("example_node")
    
    ' 初始化 FCM
    fm.Initialize("fm")
    fm.SubscribeToTopic("general")
End Sub

Sub btnSendData_Click
    ' 發送資料至 Firebase Database
    Dim map As Map
    map.Initialize
    map.Put("message", "Hello, Firebase!")
    dataRef.SetValue(map)
End Sub

Sub fm_MessageArrived (Message As RemoteMessage)
    ' 接收到推送通知
    Dim n As Notification
    n.Initialize
    n.Icon = "icon"
    n.SetInfo("新消息", Message.GetData, Main)
    n.Notify(1)
End Sub

結論
本章介紹了 Firebase 平台及其在 B4A 中的應用。透過 Firebase Database,可以輕鬆地管理即時資料,適用於多種需要即時同步資料的應用場景。使用 Firebase Cloud Messaging,則能夠輕鬆實作推送通知功能,幫助應用程式與使用者保持聯繫。這些功能的結合,將極大地提升應用程式的互動性與實用性,為使用者提供更豐富的體驗。

參考網址
https://www.b4x.com/


上一篇
Basic30天學會行動App-第21章.App性能優化
下一篇
Basic30天學會行動App-第23章.創建地圖與位置功能
系列文
用最接近自然語言的Basic30天學會行動App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言